В файле etc/ldbf.conf прописывается среда базы данных. Он
читается каждый раз при подключении нового клиента и устанавливает
для клиента допустимую для него среду.Даже при запущенном сервере, etc/ldbf.conf можно
модифицировать и новые клиенты сразу начнут использовать измененные значения.
Данный параметер может иметь значение 1 или 0. Он определяет
будет ли информация о транзакциях сохраняться в журнале транзакции
или нет при запуске сервера. Если установлен в 1,файл транзакций будет очищен при
запуске сервера.Все незаконченные транзакции предварительно будут завершены.
Вы можете произвести анализ файлов транзакции с помощью утилиты
ldbflog.
Пример:
empty_tts = 1
Допустимые значения: 1 или 0. Если параметр установлен в 1, то при запуске
сервера файл ldbf.log будет создаваться заново. Иначе информация
будет дописываться в конец файла.
Пример:
log_new = 0
Допустимые значения 0 .. 9. Определяет уровень информации,
записываемой в файл ldbf.log.Чем больше значение, тем больше пишется
в ldbf.log
Пример:
log_level = 2
Допустимые значение 0..9999.Определяет максимальное количество
изменений таблицы базы данных, через которое она будет записана на диск. В основном,
по возможности,информация из таблиц содержится в кэшах сервера.По умолчанию
flush_count установлен в значение 5. Для обеспечении большей надежности
по сохранению базы данных рекомендуется установить данный парамер в значение 1.
Пример:
flush_count = 10
Допустимые значения 0 или 1. При установленом значении в 0, сервер не
использует собственых буферов памяти для кэширования. Данный параметр может быть
полезен при наличии большой оперативной памяти,так как при значении 1,сервер
использует около 1 мегабайта оперативной памяти. В операциях поиска при включенной
оптимизации может быть достигнута более быстрая реакция сервера.
Пример:
optimize = 1
Допустимые значения 0 или 1. При установленом значении в 1, сервер
использует системный вызов fsync для сброса данных на диск всех данных
записанных в файл.Это обеспечит большую надежность сервера,но при частых
обновлениях таблиц может быть причиной большего времени отклика от сервера.
Пример:
use_fsync = 1
Допустимые значения 0 или 1. Данный параметр является системно-зависимым. Необходимо проконсультироваться с ситемным администратором для выяснения поддерживает или нет Ваша система специальный файл для храненния паролей (shadow). При установленом значении в 1, для сверки паролей пользователей, сервер использует shadow ( в этом случае сервер должен иметь привелегии суперпользователя ).
Для систем SYS V (3.2 - 4.4) и BSD/OS 2.x данный
параметр должен быть установлен в 1. Для Linux по умолчанию установлен
в 0. Если у Вас установлен пакет поддержки shadow установите параметер
shadow в 1.
Пример:
shadow = 1
Допустимые значения 1 .... 99 Данный параметр определяет интервал,
через который сервер проверяет расписание фоновых задач и проверки других
внутренних задач сервера.Не рекомендуется устанавливать данный параметр в
слишком большое значение.
Пример:
schedule_interval = 5
Допустимые значения 0 или 1. Данный параметр указывает процессу
репликации(replication),что после окончания копирования транзакций,необходимо
закрыть сессию.Если интервал между копированием достаточно большой,рекомендуется
закрывать соединение.
Пример:
replica_close = 1
Синтаксис:
replica_server=HOST[,PORT[,INTERVAL]]
Данный параметр определяет сервер,куда будут копироваться транзакции
данного сервера.Необходимо указать адрес хоста(HOST) на котором запущен сервер LDBF.
Дополнительно можно указать порт(PORT) удаленного сервера и интервал(INTERVAL),через который
сканировать журнал транзакций на присутствие новых транзакций и копировать их
на реплика сервер.По умолчанию,репликация осуществляется через каждую 1 минуту.
Если соединение с реплика сервером не установлено,реплика процесс пытается
соединится с реплика сервером и в случае неудачи откладывает репликацию до
следующего интервала.
Пример:
replica_server = hawk,7960,0.5
Данный параметер позволяет/запрещает членам группы администратора
запускать ldbfmonitor или ldbfdcgi. Допустимые значения 0 или 1.
Данные программы использует разделяемую
память (shared memory) для доступа к серверу. Данный параметр определяет
как сервер будет устанавливать права доступа к этой памяти,а также, будут
ли другие программы использующие разделяемую память для доступа к серверу
иметь право на соединение.
Для доступа к разделяемой памяти необходимо иметь права доступа.Они определяются тем же способом, что и права к файлам в системе UNIX.Если приложение запущено тем же пользователем, что и сервер, оно имеет полный доступ к разделяемой памяти.При установленном group_allow в 1,приложение запущенное пользователем, входящим в группу LDBF сервера также имеет доступ к разделяемой памяти.Все другие пользователи не имеют прав на доступ к разделяемой памяти.
Пример:
group_allow = 1 /* Разрешить запуск монитора */
group_allow = 0 /* Запретить запуск монитора */
Синтаксис:
alias ALIAS = TABLE_PATH
Данный параметер определяет таблицу базы даных. Это, так называемый, псевдоним(ALIAS) таблицы. Клиент осуществляет доступ к таблицам только через алиасы. Данный параметер ставит в соответствие алиасу определенный DBF файл(TABLE_PATH).
ALIAS - это псевдоним (алиас) таблицы;
TABLE_PATH - это полный путь к файлу данных.
Для того чтобы создать новую таблицу необходимо произвести следующие
действия:
Пример:
alias bucks=bucks
alias names=/tmp/names
Этот параметер нельзя модифицировать при запущенном сервере .
Синтаксис:
access_allow = USERNAME[@HOST][,USERNAME@HOST]...
Данный параметер определяет права доступа к серверу. В
нем указаны кто и с каких хостов имеют доступ к данной базе данных.
Для определения пользователей используется принятая в Internet терминология.
Может быть указано только имя и тогда пользователь с этим именем имеет доступ
в сервер с любой машины, а может быть указан полный адрес, включая имя
и хост. Тогда только с этого хоста пользователь с данным именем имеет доступ
к серверу.Если Вам необходимо открыть доступ целому домену,Вы можете поставить
звездочку '*' перед именем домена.Этим самым определяется маска доступа и все
хосты, удовлетворяющие этой маске будут иметь доступ к серверу.
Пример:
access_allow=vlad,joy@torn
access_allow=@*kharkov.ua
Синтаксис:
open_deny = ALIAS,USER[,USER[,.......]
Определяет кто не имеет прав на доступ к данной таблице.
ALIAS-это псевдоним таблицы, а USER - имя пользователя, которому запрещено
открывать данную таблицу. Может включать как имя, так и полный адрес.
(см. параметр access_allow)
Пример:
open_deny=names,sasha,joy@torn
open_deny = bucks, sasha
Синтаксис:
open_deny_except = ALIAS,USER[,USER[,.......]
Аналогичен параметру open_deny, только определяет, что все пользователи
кроме указаных не имеют права на открытие данной таблицы. ALIAS-это псевдоним
таблицы, а USER - имя пользователя, которому разрешено открывать данную таблицу.
Может включать как имя, так и полный адрес.(см. параметр access_allow)
Пример:
open_deny_except=names,sasha,joy@torn
open_deny_except = bucks, sasha
Синтаксис:
read_only=ALIAS,USER[,USER,...]
Определяет доступ только на чтение. Указанным пользователям
можно открыть данную таблицу только в режиме для чтения.(см. параметр
access_allow)
Пример:
read_only=names,vlad@torn,joy
read_only=bucks,joy
Синтаксис:
read_only_except=ALIAS,USER[,USER,...]
Аналогичен параметру read_only, только всем кроме указанных
пользователей можно открыть данную таблицу в режиме для чтения.(см. параметр
access_allow)
Пример:
read_only=names,vlad@torn,joy
read_only=bucks,joy
Синтаксис:
create_allow = USER[,USER,...]
Определяет кому из пользователей разрешается создавать
новые таблицы. По умолчанию пользователям не разрешается создавать
новые таблицы.(см. параметр access_allow)
Данный параметр также влияет на выполнение функции ldbfCreateAliasDef
и ldbfCreate.
Пример:
create_allow = vlad,joy@torn
Синтаксис:
drop_allow = USER[,USER,...]
Определяет кому из пользователей разрешается удалять таблицы.
По умолчанию пользователям не разрешается удалять таблицы.(см. параметр
access_allow)
Пример:
drop_allow = vlad,joy@torn
Синтаксис:
exchange_allow = USER[,USER,...]
Определяет кому из пользователей разрешается выполнять
команду Exchange. Смотрите описание функции
ldbfExchange()в разделе API.
(см. параметр access_allow)
Пример:
exchange_allow = vlad
Синтаксис:
append_deny in ALIAS { condition }
Определяет правило, которое применяется перед добавлением
записи в данную таблицу (ALIAS). Сondition есть любое S-Lang выражение.
При выполнении условия добавления в таблицу не присходит, а клиенту
возвращается код ошибки.
Следующие функции для доступа к полям записи допустимо
использовать в условии правил:
Заметим, что первые три функции при указании проверяемой
таблицы возвращают значения полей из обрабатываемой записи, будь-то
добавление, изменение или удаление, а ldbfFound() производит поиск информации
по любой таблице, не перемещая указатель текущей записи.
Пример:
append_deny in names {
((not(strcmp(ldbfStr("names","name"),"Scott"))) and
(ldbfLong("names","age") > 40) and (ldbfFound("names", "salary",5000))
}
Это правило не позволяет добавить запись в таблицу names
если поле 'name' содержит 'Scott' и возраст больше 40 лет,и существует
клиент с зарплатой 5000.
Синтаксис:
update_deny in ALIAS { condition }
Данное правило запрещает изменение таблицы
(AALIAS) при выполнении
заданного условия.
Пример:
update_deny in names {
((ldbfLong("names","age") == 0) or
(ldbfLong("names","age") < 20))
}
Это правило не позволяет изменить запись в таблице 'names', если возраст
не указан или меньше, чем 20.
Синтаксис:
delete_deny in ALIAS { condition }
Данное правило не разрещает удаление записи в таблице ((
ALIAS)
при выполнении заданного условия.
Пример:
delete_deny in names {
(ldbfLong("names","age") < 40 )
}
Не разрешается удаление клиентов, у которых возраст меньше, чем
40 лет.
Синтаксис:
after_append in ALIAS call PROCEDURE { condition }
Данное правило выполняет процедуру PROCEDURE после успешного
добавления записи в таблицу (ALIAS) и если добавленная запись удовлетворяет заданному
условию condition. PROCEDURE является именем файла, написанном на языке S-Lang или
именем процедуры, определенном в файле etc/ldbf.sl.
Должен быть указан полный путь к файлу или путь относительно домашнего каталога сервера.
Пример:
after_append in names call check_append.sl {
(ldbfLong("names","age") < 25)
}
Выполнить check_append.sl при добавлении в таблицу 'names'
и когда значение поля 'age' меньше чем 25.
Синтаксис:
after_update in ALIAS call PROCEDURE { condition }
Данное правило выполняет процедуру PPROCEDURE после успешного
изменении записи в таблице (ALIAS) и если обновленная запись удовлетворяет заданному
условию condition.PROCEDURE является именем файла, написанном
на языке S-Lang или именем процедуры,определенной в файле
etc/ldbf.sl. Должен быть указан полный путь к файлу или путь относительно
домашнего каталога сервера.
Пример:
after_update in names call check_update.sl {
(ldbfLong("names","age") < 25 )
}
Синтаксис:
after_delete in ALIAS call PROCEDURE { condition }
Данное правило выполняет процедуру PROCEDURE после успешного
удаления записи в таблице (ALIAS) и если удаленная запись удовлетворяет заданному условию condition.
PROCEDURE является именем файла, написанном на языке S-Lang или
именем процедуры, определенной в файле etc/ldbf.sl. Должен быть
указан полный путь к файлу или путь относительно домашнего каталога сервера.
Пример:
after_delete in names call check_delete.sl {(1)}
Данное правило будет запускать процедуру check_delete.sl
после каждого удаления в таблице 'names'.
Синтаксис:
procedure = PROCEDURE_NAME,PROCEDURE_PATH
Данный параметер описывает процедуру базы данных. PROCEDURE_NAME
определяет имя данной процедуры, по которому будут вызывать процедуру,
а PROCEDURE_PATH определяет путь к файлу, где хранится
текст данной процедуры,также это может быть имя процедуры,определенной в файле
etc/ldbf.sl. Только описанные процедуры могут быть вызваны
с помощью функции ldbfCall() (см. описание LDBF API).
Пример:
procedure = check_append,check_append.sl
procedure = check_delete,/home/vlad/slang/check_delete.sl
Синтаксис:
call_deny = PROCEDURE_NAME,USER[,USER..]
Данный параметр определяет кому из пользователей запрещено
вызывать данную процедуру. PROCEDURE_NAME - имя процедуры, описанное
параметом procedure.
Пример:
call_deny = check_apend,vlad,joy@torn
Синтаксис:
call_deny_except = PROCEDURE_NAME,USER[,USER..]
Параметр аналогичен call_deny, только определяет,
что всем кроме указанных пользователей запрещено вызывать данную
процедуру. PROCEDURE_NAME - имя процедуры, описанное параметом
procedure.
Пример:
call_deny_except = check_apend,vlad,joy@torn
Синтаксис:
event = EVENT_NAME
Данный параметер регистрирует события, которые могут произойти
в системе. Только события, описанные в файле ldbf.conf могут быть использованы
для передачи другим клиентам.См. описание функции
ldbfRaiseEvent().
Пример:
event=alarm
event=You_are_fool
Синтаксис:
schedule_task = min hour day mon dow PROCEDURE
Определение фоновой задачи сервера.Каждая строка состоит из шести полей разделенных пробелами:
# запускать stat.sl каждое воскресение а 1:00 ночи
schedule_task= 0 1 * * 0 stored/stat.sl
# запускать backup_tables в 1:00 ночи 1 числа каждого месяца
schedule_task= 0 1 1 * * backup_tables